package Day12.List;

/**
 * @author hyhWTX
 * @version 1.0
 * @ClassName LinkedListDemo
 * @date 2022年07月08日 16:28
 * @Description: LinkedList集合的特点
 */


import java.util.LinkedList;

/**
 * 特点：
 *  1.底层是一个链表结构的，查询慢，增删快
 *  2.里面包含了大量的操作首尾元素的方法
 *  注意：使用LinkedList集合特有的方法，不能使用多态
 *
 *  - public void addFirst(E e):将指定元素插入此列表的开头。
 *  - public void addLast(E e):将指定元素插入此列表的结尾。
 *  - public E getFirst():返回此列表的第一个元素
 * - public E getLast():返回此列表的最后一个元素。。
 * - public E removeFirst():移除并返回此列表的第一个元素。
 *  - public E removeLast():移除并返回此列表的最后一个元素
 * - public E pop():从此列表所表示的堆栈处弹出一个元素。
 * - public void push(E e):将元素推入此列表所表示的堆栈。
 * - public boolean isEmpty():如果列表不包含元素，则返回true
 */

public class LinkedListDemo {
    public static void main(String[] args) {
        show01();
        show02();
        show03();
    }
    private static void show01(){
        //创建LinkedList集合对象
        LinkedList<String> linked = new LinkedList<>();
        //使用add方法向集合中添加元素
        linked.add("a");
        linked.add("b");
        linked.add("c");
        System.out.println(linked);

        //public void addFirst(E e):将指定元素插入此列表的开头。
        //linked.addFirst("www");
        linked.push("www");
        System.out.println(linked);

        // public void addLast(E e):将指定元素插入此列表的结尾。等价于addFirst方法
        linked.addLast("mmm");
        System.out.println(linked);
    }
    // - public E getFirst():返回此列表的第一个元素
    // - public E getLast():返回此列表的最后一个元素。。
    private static void show02() {
        //创建LinkedList集合对象
        LinkedList<String> linked = new LinkedList<>();
        //使用add方法向集合中添加元素
        linked.add("a");
        linked.add("b");
        linked.add("c");

        //linked.clear();//清空元素,NoSuchElementException会报列表为空的异常
        if (!linked.isEmpty()) {//判断列表是否为空，为空不执行，不为空执行
            String first = linked.getFirst();
            System.out.println(first);
            String last = linked.getLast();
            System.out.println(last);
        }
    }
    private static void show03() {
        //创建LinkedList集合对象
        LinkedList<String> linked = new LinkedList<>();
        //使用add方法向集合中添加元素
        linked.add("a");
        linked.add("b");
        linked.add("c");
        System.out.println(linked);
        String f = linked.removeFirst();
        System.out.println("移除的第一个元素为："+f);
        String last = linked.removeLast();
        System.out.println("移除的最后一个元素为："+last);
        System.out.println(linked);
    }
}
